@CI
2年前 提问
1个回答

MapReduce设计上具有哪些主要的技术特征

齐士忠
2年前

MapReduce设计上具有以下主要的技术特征:

  • 向“外”横向扩展,而非向“上”纵向扩展:即MapReduce集群的构建完全选用价格便宜、易于扩展的低端商用服务器,而非价格昂贵、不易扩展的高端服务器。对于大规模数据处理,由于有大量数据存储需要,显而易见,基于低端服务器的集群远比基于高端服务器的集群优越,这就是为什么MapReduce并行计算集群会基于低端服务器实现的原因。

  • 失效被认为是常态:MapReduce集群中使用大量的低端服务器,节点硬件失效和软件出错是常态,因而一个良好设计、具有高容错性的并行计算系统不能因为节点失效而影响计算服务的质量,任何节点失效都不应当导致结果的不一致或不确定性。任何一个节点失效时,其他节点要能够无缝接管失效节点的计算任务,当失效节点恢复后应能自动无缝加入集群,而不需要管理员人工进行系统配置。

  • 为应用开发者隐藏系统层细节:MapReduce提供了一种抽象机制将程序员与系统层细节隔离开来,程序员仅需描述需要计算什么,而具体怎么去计算就交由系统的执行框架处理,这样程序员可从系统层细节中解放出来,而致力于其应用本身的算法设计。

  • 顺序处理数据、避免随机访问数据:大规模数据处理的特点决定了大量的数据记录难以全部存放在内存,而通常只能放在外存储中进行处理。由于磁盘的顺序访问要远比随机访问快得多,因此MapReduce主要设计为面向顺序式大规模数据的磁盘访问处理。

  • 把处理向数据迁移:为了减少大规模数据并行计算系统中的数据通信开销,代之把数据传送到处理节点(数据向处理器或代码迁移)时,应当考虑将处理向数据靠拢和迁移。MapReduce采用了数据/代码互定位的技术方法,计算节点将首先尽量负责计算其本地存储的数据,以发挥数据本地化特点,仅当节点无法处理本地数据时,再采用就近原则寻找其他可用计算节点,并把数据传送到该可用计算节点。

  • 平滑无缝的可扩展性:这里指出的可扩展性主要包括两层意义上的扩展数据扩展和系统规模扩展性。